package h1.sismetro.negocio.funcionario;

import h1.sismetro.classesbasicas.Funcionario;
import h1.sismetro.exceptions.AcessoAoBancoException;
import h1.sismetro.exceptions.ConexaoComBancoException;
import h1.sismetro.exceptions.FuncionarioJaCadastradoException;
import h1.sismetro.exceptions.FuncionarioNaoEncontradoException;
import h1.sismetro.exceptions.NenhumFuncionarioCadastradoException;

import java.util.List;

public interface ICadastroFuncionario {	
	public void cadastrar(Funcionario novoFuncionario) throws AcessoAoBancoException, ConexaoComBancoException, FuncionarioJaCadastradoException;
	public boolean existe(int matricula) throws AcessoAoBancoException, ConexaoComBancoException;
	public void alterar(Funcionario novoFuncionario) throws AcessoAoBancoException, ConexaoComBancoException, FuncionarioNaoEncontradoException;
	public void excluir(int matricula) throws AcessoAoBancoException, ConexaoComBancoException, FuncionarioNaoEncontradoException;
	public Funcionario recuperar(int matricula) throws AcessoAoBancoException, ConexaoComBancoException, FuncionarioNaoEncontradoException;
	public List<Funcionario> imprimir() throws AcessoAoBancoException, ConexaoComBancoException, NenhumFuncionarioCadastradoException ;
	public int obterCodigo() throws ConexaoComBancoException, AcessoAoBancoException ;
}
